#什么是进程？
#每个进程至少包含一个线程：
#a = Thread(target=xxxx,args=(a,)) 记住这里不能写括号
# a.start()
# a.join()  调用了join方法，就会等待，等待子线程运行结束
# 多个线程操作一个公共变量时，要上锁 Lock对象 l = Lock（）  l.acquire()  l.release()
# daemon (守护)程序，一个程序要等所有非daemon程序都执行完，才会结束  Thread（target= xxx，args=（sss，xx），daemon=True）这样这个线程就是daemon的
# 多进程库：multiprocessing  Process、Manager

#------------------------------------------------------------

# from threading import Thread

# def fun1(para1,para2):
#     print('我是一个正常执行的程序')
#     print(f'我的一个参数是{para1},还有一个参数是{para2}')

# t = Thread(target=fun1,args=('cpp','ccp'))
# t.start()

# print('我这个程序是主线程里面的')

# import threading,os
# def get_url_file(para1):
#     #wget 的位置
#     wget_loc = r''
#     cmd = rf'{wget_loc} {para1} -P d:\\tmp'
#     os.system(cmd)

# while True:
#     address = input('请输入要下载东西的网址：')
#     t = threading.Thread(target=get_url_file,args=(address,))
#     t.start()

import requests
from multiprocessing import Process,Manager

def get_something_from_url(para1,dict1):
    res = requests.get(para1)
    dict1[para1] = res.text

if __name__ == '__main__':
    taskList = [
    'http://httpbin.org/ip',
    'http://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/ace/1.4.14/ext-linking.js',
    'http://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/Base64/1.1.0/base64.min.js.map',
    ]
    m = Manager()
    share_dict = m.dict()
    prolist = []
    for i in taskList:
        p = Process(target=get_something_from_url,args=(i,share_dict))
        p.start()
        prolist.append(p)


    for p in prolist:
        p.join()

    # print(share_dict)
    with open('/Users/show/Downloads/readme89.txt','w',encoding='utf8') as f: 
        for p in taskList:
            f.write(share_dict[p])
